import { BaseComponentParser } from './core/BaseComponentParser';
import { Vue2ComponentParser } from './vue2/Vue2ComponentParser';
import { Vue3ComponentParser } from './vue3/Vue3ComponentParser';

/**
 * Vue版本
 */
export type VueVersion = '2' | '3' | 'auto';

/**
 * 组件解析器工厂
 * 用于创建不同Vue版本的组件解析器
 */
export class ComponentParserFactory {
  /**
   * 创建组件解析器
   * @param scanPaths 要扫描的组件路径
   * @param vueVersion Vue版本 (2, 3, 或 auto)
   * @returns 组件解析器实例
   */
  public static createParser(
    scanPaths: string[],
    vueVersion: VueVersion = 'auto'
  ): BaseComponentParser {
    switch (vueVersion) {
      case '2':
        return new Vue2ComponentParser(scanPaths);
      case '3':
        return new Vue3ComponentParser(scanPaths);
      case 'auto':
      default:
        // 默认使用Vue3解析器，因为Vue3可以向下兼容大部分Vue2语法
        return new Vue3ComponentParser(scanPaths);
    }
  }
} 